//package com.three.server.mq;
//
//import com.alibaba.fastjson.JSON;
//import com.rabbitmq.client.Channel;
//import com.smartcar.common.domain.request.OrderRequest;
//import com.three.server.mapper.OrderMapper;
//import lombok.extern.log4j.Log4j2;
//import org.springframework.amqp.core.Message;
//import org.springframework.amqp.rabbit.annotation.Queue;
//import org.springframework.amqp.rabbit.annotation.RabbitListener;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.stereotype.Component;
//
//import java.io.IOException;
//
///**
// * @ProjectName : drive
// * @PackageName : com.three.server.mq
// * @ClassName : OrderEditMq
// * @Author : ZhouTeng
// * @CreateTime : 2023/10/19 10:02
// */
//
//@Component
//@Log4j2
//public class OrderEditMq {
//    @Autowired
//    private RedisTemplate<String,String> redisTemplate;
//    @Autowired
//    private OrderMapper  orderMapper;
//
//    @RabbitListener(queuesToDeclare = {@Queue(name = "orderInsert")})
//    public void userInsert(String data, Message message, Channel channel){
//        String messageId = message.getMessageProperties().getMessageId();
//        try {
//            Long add = redisTemplate.opsForSet().add("queue", messageId);
//            if(add>0){
//                OrderRequest orderUserInsertRequest = JSON.parseObject(data, OrderRequest.class);
//                orderMapper.inserOrder(orderUserInsertRequest);
//                channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
//
//            }else{
//                log.info("消息重复消费");
//            }
//        }catch (Exception e){
//            log.info("消息消费失败:{}",e);
//            try {
//                channel.basicReject(message.getMessageProperties().getDeliveryTag(),true);
//                redisTemplate.opsForSet().remove("queue", messageId);
//            } catch (IOException ex) {
//                throw new RuntimeException(ex);
//            }
//
//        }
//    }
//
//    @RabbitListener()
//    public void driverInsert(String data,Message message,Channel channel){
//        String messageId = message.getMessageProperties().getMessageId();
//        try{
//            Long queue = redisTemplate.opsForSet().add("queue", messageId);
//            if(queue>0){
//                OrderRequest orderRequest = JSON.parseObject(data, OrderRequest.class);
//                orderMapper.insertOrderByDriver(orderRequest);
//                channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
//            }
//        }catch (Exception e){
//            log.info("消息消费失败:{}",e);
//            try {
//                channel.basicReject(message.getMessageProperties().getDeliveryTag(),true);
//                redisTemplate.opsForSet().remove("queue", messageId);
//            } catch (IOException ex) {
//                throw new RuntimeException(ex);
//            }
//
//        }
//    }
//}
